import {defineStore} from "pinia"
import {PRIVATE_KEY, PUBLIC_KEY} from "@/utils/RsaUtils.js";
import {stringIsNull} from "@/utils/StringUtils.js";


/**
 * 定义与 RSA 加密相关的 Store
 * 'rsaStore' 为定义的 Store 的 id
 *
 * @type {StoreDefinition<string, {}, {}, {}>}
 */
const useRsaStore = defineStore('rsaStore', {
    state: () => ({
        [PUBLIC_KEY]: '',
        [PRIVATE_KEY]: ''
    }),
    actions: {
        /**
         * 保存 RSA 密钥对
         *
         * @param publicKey 公钥
         * @param privateKey 私钥
         */
        saveKeyPair(publicKey = '', privateKey = '') {
            // 保存公钥
            if (!stringIsNull(publicKey)) this[PUBLIC_KEY] = publicKey
            // 保存私钥
            if (!stringIsNull(privateKey)) this[PRIVATE_KEY] = privateKey
        },
    },
    getters: {
        /**
         * 获取通用的 RSA 公钥
         *
         * @return {*}
         */
        publicKey() {
            return this[PUBLIC_KEY]
        },
        /**
         * 获取通用的 RSA 私钥
         *
         * @return {*}
         */
        privateKey() {
            return this[PRIVATE_KEY]
        },
    }
})

/**
 * 导出 Store
 */
export default useRsaStore